package com.siyougame.business.dal.mysql.templateItem;

import java.util.*;

import com.siyougame.business.controller.app.vo.AppTemplateItemPageReqVO;
import com.siyougame.business.dal.dataobject.template.TemplateDO;
import com.siyougame.business.enums.TemplateItemStatusEnum;
import com.siyougame.business.enums.TemplateStatusEnum;
import com.siyougame.common.pojo.PageResult;
import com.siyougame.mybatis.mybatis.core.query.LambdaQueryWrapperX;
import com.siyougame.mybatis.mybatis.core.mapper.BaseMapperX;
import com.siyougame.business.dal.dataobject.templateItem.TemplateItemDO;
import org.apache.ibatis.annotations.Mapper;
import com.siyougame.business.controller.admin.templateItem.vo.*;

/**
 * 二级模板明细 Mapper
 *
 * @author ${table.author}
 */
@Mapper
public interface TemplateItemMapper extends BaseMapperX<TemplateItemDO> {

    default PageResult<TemplateItemDO> selectPage(TemplateItemPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<TemplateItemDO>()
                .eqIfPresent(TemplateItemDO::getTempId, reqVO.getTempId())
                .eqIfPresent(TemplateItemDO::getContent, reqVO.getContent())
                .eqIfPresent(TemplateItemDO::getCheckItem, reqVO.getCheckItme())
                .eq(TemplateItemDO::getStatus, TemplateItemStatusEnum.NORMAL.getCode())
                .eqIfPresent(TemplateItemDO::getRemark, reqVO.getRemark())
                .eqIfPresent(TemplateItemDO::getSortRank, reqVO.getSortRank())
                .eqIfPresent(TemplateItemDO::getDescription, reqVO.getDescription())
                .betweenIfPresent(TemplateItemDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime())
                .orderByAsc(TemplateItemDO::getOrdNum));
    }
    default PageResult<TemplateItemDO> selectPage(AppTemplateItemPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<TemplateItemDO>()
                .eqIfPresent(TemplateItemDO::getTempId, reqVO.getTempId())
                .eq(TemplateItemDO::getStatus, TemplateItemStatusEnum.NORMAL.getCode())
                .likeIfPresent(TemplateItemDO::getContent, reqVO.getContent())
                .orderByAsc(TemplateItemDO::getOrdNum));
    }

    default List<TemplateItemDO> selectList(TemplateItemExportReqVO reqVO) {
        return selectList(new LambdaQueryWrapperX<TemplateItemDO>()
                .eqIfPresent(TemplateItemDO::getTempId, reqVO.getTempId())
                .eqIfPresent(TemplateItemDO::getContent, reqVO.getContent())
                .eqIfPresent(TemplateItemDO::getCheckItem, reqVO.getCheckItme())
                .eq(TemplateItemDO::getStatus, TemplateItemStatusEnum.NORMAL.getCode())
                .eqIfPresent(TemplateItemDO::getRemark, reqVO.getRemark())
                .eqIfPresent(TemplateItemDO::getSortRank, reqVO.getSortRank())
                .eqIfPresent(TemplateItemDO::getDescription, reqVO.getDescription())
                .betweenIfPresent(TemplateItemDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime())
                .orderByAsc(TemplateItemDO::getOrdNum));
    }

}